﻿using System;
using System.Runtime.InteropServices;

namespace Standard;

[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct DWM_TIMING_INFO
{
    public int cbSize;

    public UNSIGNED_RATIO rateRefresh;

    public ulong qpcRefreshPeriod;

    public UNSIGNED_RATIO rateCompose;

    public ulong qpcVBlank;

    public ulong cRefresh;

    public uint cDXRefresh;

    public ulong qpcCompose;

    public ulong cFrame;

    public uint cDXPresent;

    public ulong cRefreshFrame;

    public ulong cFrameSubmitted;

    public uint cDXPresentSubmitted;

    public ulong cFrameConfirmed;

    public uint cDXPresentConfirmed;

    public ulong cRefreshConfirmed;

    public uint cDXRefreshConfirmed;

    public ulong cFramesLate;

    public uint cFramesOutstanding;

    public ulong cFrameDisplayed;

    public ulong qpcFrameDisplayed;

    public ulong cRefreshFrameDisplayed;

    public ulong cFrameComplete;

    public ulong qpcFrameComplete;

    public ulong cFramePending;

    public ulong qpcFramePending;

    public ulong cFramesDisplayed;

    public ulong cFramesComplete;

    public ulong cFramesPending;

    public ulong cFramesAvailable;

    public ulong cFramesDropped;

    public ulong cFramesMissed;

    public ulong cRefreshNextDisplayed;

    public ulong cRefreshNextPresented;

    public ulong cRefreshesDisplayed;

    public ulong cRefreshesPresented;

    public ulong cRefreshStarted;

    public ulong cPixelsReceived;

    public ulong cPixelsDrawn;

    public ulong cBuffersEmpty;
}
